
#返回能被2整出的数
def is_odd(n):
    return n%2==1
#把一个序列中的空字符串删掉
def not_empty(s):
    return s and str(s).strip()
print(list((filter(not_empty,['A', '', 'B', None, 'C', '  ']))))

#找出素数
#定义生成器
def _odd_iter():
    n=1
    while True:
        n=n+2
        yield n
#定义筛选器
def _not_divisible(n):
    return lambda x:x%n>0
#定义一个生成器，不断返回下一个素数
def primes():
    yield 2
    it=_odd_iter()
    while True:
        n=next(it)
        yield n
        it=filter(_not_divisible(n),it)

for n in primes():
    if n<1000:
        print(n)
    else:
        break

#回数问题
def is_palindrome(n):
    s=str(n)
    a=0;
    b=-1;
    if  len(s)<2 :
        return False
    while  len(s)/2>a:
        if s[a]==s[b]:
            a=a+1
            b=b-1
            continue
        return False
    return True

print(list(filter(is_palindrome,range(1,1000))))

#简介版
def is_palindrome(n):
    return str(n) == str(n)[::-1]
output = filter(is_palindrome, range(1, 1000))
print('1~1000:', list(output))